﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<stdio.h>
using namespace std;
//namespace ljp1
//{
//	//void swap(int a, double b)
//	//{
//	//	//
//	//}
//	void swap(double b, int a)
//	{
//
//	}
//}
//namespace ljp2
//{
//	void swap(double b,int a)
//	{
//		//
//	}
//}
//using namespace ljp1;
////using namespace ljp2;
//int Add(int a, int b)
//{
//	return a + b;
//}
//int Add(double a, double b)
//{
//	return a + b;
//}
//int Add(double a, int b)
//{
//	return a + b;
//}
//int Add(int a, double b)
//{
//	return a + b;
//}
//int Add(double a, double b,int c)
//{
//	return a + b+c;
//}
//int main()
//{
//	/*cout << Add(10, 20) << endl;
//	cout << Add(10.5, 20.5) << endl;
//	cout << Add(10.5, 20) << endl;
//	cout << Add(10, 20.5) << endl;
//	cout << Add(10.5, 20.5,30) << endl;*/
//	/*int a = 10;
//	int b = 20;
//	int& y = a;
//	 y = b;
//	 int* ptr = NULL;
//	 int& r = *ptr;
//	 printf("%zd\n", sizeof(int&));
//	 printf("%zd\n", sizeof(short&));
//	 printf("%zd\n", sizeof(char&));
//
//	 printf("%d\n", a);
//	 printf("%d\n", b);
//	 printf("%d\n", y);*/
//	/*printf("%p\n", &a);
//	printf("%p\n", &b);
//	printf("%p\n", &y);*/
//	//printf("%p\n", &p);
//
//
//	return 0;
//}

void TestConstRef()
{
	const int a = 10;
	//int& ra = a;   // 该语句编译时会出错，a为常量
	const int& ra = a;
	// int& b = 10; // 该语句编译时会出错，b为常量
	const int& b = 10;
	double d = 12.34;
	//int& rd = d; // 该语句编译时会出错，类型不同
	const int& rd = d;//
}

//	int a = 10;
//	int& b = a;
//	const int& y = b;
//	a++;
//	const int* p1 = &a;
//
//	//int* p2 = p1;
//	printf("%d\n", a);
//	printf("%d\n", b);
//	printf("%d\n", y);
//	
/*int a = 10;
	int& b = a;
	cout << "&a=" << &a << endl;
	cout << "&b=" << &b << endl;*/
//inline int Add(int a, int b)
//{
//	return a + b;
//}
//int main()
//{
//	//int ret = Add(1, 2);
//	return 0;
//}

//typedef char* pstring;
//int main()
//{
//	const pstring p1;
//	const pstring* p2;
//	return 0;
//}
//int main()
//{
//		int array[] = { 1, 2, 3, 4, 5 };
//		for (auto& e : array)
//			e *= 2;
//		for (auto e : array)
//			cout << e << " ";
//	return 0;
//}
//#pragma pack(1)
struct A {

	long a1;

	short a2;

	int a3;

	int* a4;

};
//#pragma pack()

int main()
{
	printf("%zd", sizeof(struct A));
	return 0;
}